1. Technical Field
This invention generally relates to reception and transmission of data over a network. More specifically, this invention relates to adaptive Transmission Control Protocol (TCP) delayed acknowledgment.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include operating system software that controls the basic function of the computer, and one or more software applications that run under the control of the operating system to perform desired tasks. For example, a typical IBM Personal Computer may run the OS/2 operating system, and under the control of the OS/2 operating system, a user may execute an application program, such as a word processor. As the capabilities of computer systems have increased, the software applications designed for high performance computer systems have become extremely powerful.
Communication between two computers or processes is facilitated by standard protocols. These protocols establish uniform means by which a sender can reliably transmit information to a receiver. However, the protocols establish the fundamental structures of communication, not how to optimally use them. Transmission Control Protocol/Internet Protocol (TCP/IP) is one such inter-process/inter-computer communication protocol.
Within the TCP/IP protocol suite used throughout the Internet, the Transmission Control Protocol (TCP) provides reliable end-to-end delivery of a stream of bytes over a network connection. Applications such as Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), and Telnet use TCP to reliably send and receive data over IP networks. The design of TCP includes an acknowledgment (ACK) scheme to guarantee that the data sent from one end of a connection is actually received by the other end. If the sender does not receive an ACK within a calculated time period, it will assume the data has been lost and retransmits the data.
In order to gain efficiencies both in network utilization and protocol processing overhead, the TCP standard provides for what is known as delayed ACKs. Delayed ACKs are important because the sender may transmit multiple segments of data, called packets, before a required ACK period lapsed on an earlier segment. The basic idea behind the delayed ACK strategy is that by not immediately sending an ACK for each packet received, it is possible to combine acknowledgment of the receipt of multiple packets into a single ACK.
Another means of reducing ACKs arises when applications that receive data quickly turn-around and send data back in the other direction. This situation allows the receiver to combine or “piggyback” an ACK with the data to be sent back thereby reducing protocol processing overhead by reducing the total number of packets to be processed.
For certain traffic patterns there are definite advantages when using delayed ACKs. However, for other traffic patterns the delayed ACK introduces 2 primary problems. First, delayed ACKs can introduce an unnecessary delay in the flow of data resulting in reduced throughput rates. According to the TCP standard, an ACK should not be delayed by more than 500 ms and, in fact, most implementations use a 200 ms maximum delay. In a one-directional bulk data transfer, introducing these 200 ms delays throughout the transfer can have a significant negative impact on the throughput realized. This is especially true when the sender does not anticipate receiving delayed ACKs. In such a case the sender may delay the entire length of proscribed time and then resend the data before an ACK is received. This introduces a large amount of delay and additional traffic in the communication channel.
A second problem introduced by using delayed ACKs is that a potentially significant amount of processing overhead is introduced to set a time-out timer and on timer expiration, to send the delayed ACK.
The net effect is that there are conditions where delayed ACKs enhance communication throughput and conditions where delayed ACKs inhibit communication throughput. What is needed is a system and method that overcomes these problems.